home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import java.util.Enumeration;
- import java.util.Vector;
-
- public class DCDWriter$ElemProxy extends DCDWriter.DeclProxy {
- // $FF: synthetic field
- final DCDWriter this$0;
- ElementDeclaration decl;
- DCDWriter.AttrProxy attrProxy;
-
- DCDWriter$ElemProxy(DCDWriter var1) {
- super((DCDWriter)null);
- this.this$0 = var1;
- this.attrProxy = new DCDWriter.AttrProxy(this.this$0);
- }
-
- DCDWriter$ElemProxy(DCDWriter var1, ElementDeclaration var2) {
- super((DCDWriter)null);
- this.this$0 = var1;
- this.attrProxy = new DCDWriter.AttrProxy(this.this$0);
- this.setDecl(var2);
- }
-
- void setDecl(ElementDeclaration var1) {
- this.decl = var1;
- super.setDecl(var1);
- }
-
- public void write(SXE var1, boolean var2) {
- var1.writeElem("ElementDef");
- var1.writeAttr("Type", this.decl.getName());
- ContentModel var3 = this.decl.getEffectiveModel();
- this.writeModelAttrs(var1, var3);
- if (var2) {
- ((DCDWriter.DeclProxy)this).writeComments(var1);
- }
-
- Vector var4 = new Vector();
- Enumeration var5 = this.decl.getAttributes(false);
-
- while(var5.hasMoreElements()) {
- AttributeGroupMember var6 = (AttributeGroupMember)var5.nextElement();
- if (var6 instanceof AttributeDeclaration) {
- this.attrProxy.setDecl((AttributeDeclaration)var6);
- this.attrProxy.writeType(var1, var2);
- var4.addElement(var6);
- }
- }
-
- Enumeration var10 = this.decl.getAttributes(true);
-
- while(var10.hasMoreElements()) {
- AttributeGroupMember var7 = (AttributeGroupMember)var10.nextElement();
- AttributeDeclaration var8 = (AttributeDeclaration)var7;
- if (!var4.contains(var8)) {
- this.attrProxy.setDecl((AttributeDeclaration)var7);
- this.attrProxy.writeRef(var1, false);
- }
- }
-
- if (var3.isTagsOnly()) {
- this.writeModel(var1, var3);
- } else if (var3.isMixed()) {
- var1.writeElem("Group", -1);
- var1.writeAttr("Occurs", "ZeroOrMore");
- ContentModelTermEnum var11 = ((ContentModelTerm)var3).getLeafTerms();
-
- while(var11.hasMoreElements()) {
- ContentModelTerm var12 = var11.nextContentModelTerm();
- CMTReferent var9 = var12.getReferent();
- if (var9 instanceof ElementDeclaration) {
- var1.writeElem("Element", -1);
- var1.writeText(this.this$0.getQName(var12.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration")));
- var1.flush("Element");
- }
- }
-
- var1.flush("Group");
- }
-
- var1.flush("ElementDef");
- }
-
- String getOccurs(ContentModelTerm var1) {
- char var2 = var1.getOccurance();
- if (var2 == 0) {
- return "Required";
- } else if (var2 == '?') {
- return "Optional";
- } else if (var2 == '+') {
- return "OneOrMore";
- } else if (var2 == '*') {
- return "ZeroOrMore";
- } else {
- throw new IllegalArgumentException(String.valueOf("Unknown occurance: ").concat(String.valueOf(var2)));
- }
- }
-
- void writeModelAttrs(SXE var1, ContentModel var2) {
- var1.writeAttr("Content", "Closed");
- if (var2.isAny()) {
- var1.writeAttr("Model", "Any");
- }
-
- if (var2.isEmpty()) {
- var1.writeAttr("Model", "Empty");
- } else if (var2.isTextOnly()) {
- var1.writeAttr("Model", "Data");
- if (this.decl.getDataType() != null) {
- var1.writeAttr("Datatype", this.decl.getDataType().getSource());
- }
- } else if (var2.isMixed()) {
- var1.writeAttr("Model", "Mixed");
- } else if (var2.isTagsOnly()) {
- var1.writeAttr("Model", "Elements");
- }
-
- }
-
- void writeModel(SXE var1, ContentModelTerm var2) {
- if (var2 instanceof ContentModel) {
- ContentModelTermEnum var3 = var2.getTerms(true);
-
- while(var3.hasMoreElements()) {
- ContentModelTerm var4 = (ContentModelTerm)var3.nextElement();
- this.writeModel(var1, var4);
- }
- } else if (var2.isGroup()) {
- var1.writeElem("Group", -1);
- var1.writeAttr("RDF:Order", var2.getChildConnection() == ',' ? "Seq" : "Alt");
- if (var2.getOccurance() != 0) {
- var1.writeAttr("Occurs", this.getOccurs(var2));
- }
-
- ContentModelTermEnum var5 = var2.getTerms(true);
-
- while(var5.hasMoreElements()) {
- ContentModelTerm var6 = (ContentModelTerm)var5.nextElement();
- this.writeModel(var1, var6);
- }
-
- var1.flush("Group");
- } else {
- if (var2.getOccurance() != 0) {
- var1.writeElem("Group", -1);
- var1.writeAttr("Occurs", this.getOccurs(var2));
- }
-
- var1.writeElem("Element", -1);
- var1.writeText(this.this$0.getQName(var2.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration")));
- var1.flush("Element");
- if (var2.getOccurance() != 0) {
- var1.flush("Group");
- }
- }
-
- }
- }
-